package main

import (
	"fmt"
	"sync"
	"time"

	"golang.org/x/time/rate"
)

func main() {
	// 这里面表示多长时间产生一个桶
	limit := rate.Every(time.Millisecond * 1)
	// 第二个参数表示桶的大小
	limiter := rate.NewLimiter(limit, 2)
	var wg sync.WaitGroup
	for i := 0; i < 10; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()
			if limiter.Allow() {
				fmt.Print("允许运行...   ")
			} else {
				fmt.Print("禁止运行...   ")
			}
			fmt.Println(limiter.Burst())
			time.Sleep(time.Millisecond * 20)
		}()
	}
	wg.Wait()
}
